home *** CD-ROM | disk | FTP | other *** search
- ; ******************************************************************************
- ; ***
- ; *** Mit diesem Startup-Code kann ein TwiLight-Modul debugged werden.
- ; *** Für das endgültige Modul muß 'DEBUG' auf 0 gesetzt werden.
- ; *** Ein Modul, daß mit DEBUG=1 compiliert bzw. assembliert wurde, kann dann
- ; *** im Debugger mit Symboltabelle, Debuginformationen usw. wie ein
- ; *** ganz normales Programm gestartet werden. TWILIGHT.ACC wird auf C:\
- ; *** erwartet und nachgelden. Das Modul wird dann automatisch im Demo-Modus
- ; *** gestartet.
- ; ***
- ; *** Weiterhin können Module durch Anspringen des Labels 'RETURN' jederzeit,
- ; *** egal wie tief sie in einer Schleife verschachtelt sind, zu TwiLight
- ; *** zurückspringen, z.B. weil tl_check() das Aufwachen signalisiert.
- ; ***
- ; ***
- ; *** (c) 1994 by Delirium Arts
- ; ***
- ; ******************************************************************************
-
-
- DEBUG=1
-
-
- globl errno ; globale Pure C variablen
-
-
-
- ********************************************************************************
- * *
- * GLOBAL TEXT SECTION *
- * *
- ********************************************************************************
-
- text
-
- ifne DEBUG ; Debug Version aktiv?
-
-
- ; *** 'Programm-' Start
-
- start: bra.s .begin ; ->
-
- dc.b "PCDEBUGTLM" ; magic
-
-
- .begin: lea stackend,sp ; neuer SP
- lea start-256(pc),a6 ; Zeiger auf Basepage
- move.l $c(a6),a1 ; Größe des Textsegments...
- add.l $14(a6),a1 ; ...des Datasegments
- add.l $1c(a6),a1 ; ...des BSS-Segments
- lea 256(a1),a1 ; ...und Größe der Basepage addieren.
- pea (a1) ; Mshrink: size
- pea (a6) ; Addresse
- clr -(sp) ; Null-Parameter
- move #74,-(sp) ; ... und los
- trap #1 ; Speicher freigeben
-
- lea 12(sp),sp ; Stackkorrektur
-
-
-
- ; *** Startadresse des Moduls nach HEX wandeln.
-
- lea envadr+8,a0 ; zeiger auf letzte Stelle
- moveq #8-1,d0 ; 8 Zeichen
- move.l #modul_begin,d1 ; Startadresse des Moduls
-
- .bintohex: move.b d1,d2 ; Zahlen einzeln konvertieren...
- and #$f,d2
- add.b #'0',d2
- cmp.b #'9',d2
- bls.s .store
-
- add.b #'A'-10-'0',d2 ; Bei Hex-Uahlen großbuchstaben nehmen
-
- .store: move.b d2,-(a0) ; rein in Buffer...
- lsr.l #4,d1 ; Nächste Zahl
- dbf d0,.bintohex ; und das ganze acht mal.
-
-
- ; *** execute TwiLight
-
- addq #6,sp ; Der liebe Stack
- pea environment ; Pexec: Zeiger auf Environment
- pea 128(a6) ; Kommandozeile
- pea filespec ; Zeiger auf 'TWILIGHT.ACC'
- clr -(sp) ; mode: load and go
- move #75,-(sp) ;
- trap #1 ; und los!
-
- lea 16(sp),sp ; Stack...
-
-
- ; *** Fehlerbehandlung
-
-
- tst d0 ; TwiLight gefunden?
- bpl.s .quit ; ja! :-)
-
- pea errmsg ; Fehler zeigen
- move #9,-(sp) ; Cconws
- trap #1
-
- move #7,(sp) ; Waitkey
- trap #1
-
- addq #6,sp
-
- .quit: clr -(sp) ; Ciao...
- trap #1
-
-
-
- DATA
-
- filespec: dc.b "C:\TWILIGHT.ACC",0 ; TwiLight-dateiname
- fsend:
-
-
- environment: dc.b "ADRESSE=" ; environment
- envadr: dc.b "........",0
- dc.b 0
-
- ; Fehler:
- errmsg: dc.b $07 ; bing!
- dc.b $1b,"E" ; Schirm leer machen
- dc.b $0a ; leerzeile
- dc.b "FEHLER: TWILIGHT.ACC kann nicht geladen werden",$0d,$0a
- dc.b "Bitte Taste drücken",0
-
- EVEN
-
- ; BSS
-
- stack: ds.l 256-32 ; Das reicht für'n Stack
- stackend: ds.l 32 ; ...lieber etwas mehr nach hinten
-
-
- endif ; ifne PCD
-
-
-
- ; *** Und hier geht der eigentliche Startup-Code los
-
-
- ; Twilight C-Modul Startup-Code
- ; Version 0.02
- ; vom 25.10.1992
- ; geschrieben von Arndt Weinmann
- ; Rheinallee 85
- ; 6500 Mainz
- ;
- ; erweitert von Delirium Arts
- ; Letzte Änderung: 1.5. 1994
-
- .IMPORT module_main
- .EXPORT RETURN
-
-
- .TEXT
-
- modul_begin:
- bra.s modul_start ; nicht zuerst in den C-Code, sondern Stack sichern!
- dc.w 0 ; damit es ein langer Sprung ist.
- dc.l 'XTLM' ; ModulMagic
- dc.w $FFFF ; Versionsnummer
-
- .IMPORT module_info
- dc.l module_info ; Pointer auf Modulstruktur
-
- modul_start:
- move.l SP,stack_buffer ; Stack wegstecken - für Quick-Exit!
- bra module_main
-
-
- RETURN: ; Quick-Exit...
- move.l stack_buffer(PC),SP
- rts
-
-
-
-
- .DATA
-
- stack_buffer: dc.l 0
- errno: dc.w 0 ; global variables for Pure C
-
-
- end
-
-
- *EOF
-